-- 指示器武器兼容角色空手右键动作
-- 使用方法：直接粘贴到模组环境 确保角色的空手右键动作 priority > 10

-- 小恶魔装备有aoetarget的武器时，右键显示"灵魂跳跃"，但是点击右键无反应，也无法地图跳跃
-- 官方方法中，如果手部装备有aoetarget并且可以触发动作，就不会获取玩家pointspecialactionsfn
-- 这里额外获取一次pointspecialactionsfn并与原有动作进行排序，优先级更高的动作将被放在第一位可以被右键触发
-- 这样角色pointspecialactionsfn中的动作优先级高于10时，就可以在手持aoetarget的武器时正常触发右键动作

-- 可惜CASTAOE和BLINK的优先级都是10 小恶魔的问题并没有被解决）

local PlayerActionPicker = require "components/playeractionpicker"
local function OrderByPriority(l, r)
    return l.action.priority > r.action.priority
end
local _GetRightClickActions = PlayerActionPicker.GetRightClickActions
function PlayerActionPicker:GetRightClickActions(position, target, spellbook, ...)
    local acts = _GetRightClickActions(self, position, target, spellbook, ...) or {}

    if (target == nil or target:HasTag("walkableplatform") or target:HasTag("walkableperipheral")) 
    and self.map:IsPassableAtPoint(position:Get()) then
        local useitem = self.inst.replica.inventory:GetActiveItem()
        local new = self:GetPointSpecialActions(position, useitem, true)
        if #new > 0 then
            for k, v in pairs(new) do
                table.insert(acts, v)
            end
        end
    end

    table.sort(acts, OrderByPriority)
    return acts
end